// javascript方式：函数声明
function sum(s, y) {
  return s + y;
}

// javascript方式：函数表达式。
let fnSum = function (x, y) {
  return x + y
}


// typescript方式：
// 会对函数的输入和输出有约束，输入和输出需要定义类型。；
// 参数传入（参数定义类型），返回值（定义类型）
function sum1(x: number, y: number): number {
  return x + y;
}
let result: number = sum1(2, 4);


let sum2 = function (x: number, y: number): number { return x + y }
// 上面代码仅是将右侧匿名函数进行了类型的定义，对左边sum2这个变量没有实质的意义。
// 应该这样改才是对左边变量进行的定义
let sum3: (x: number, y: number) => number = function (x: number, y: number): number { return x + y }


function stradd(name: string, work?: string): string {
  return name + work;
}

function stradd2(...items: any[]): string {
  console.log(``, items)
  return 'hahaha';
}
stradd2('sjdfe', 2, 42)


// 什么是重载？允许1个函数，接受不同数量或类型的参数。
function setAbc(x: number | string): string | number {
  return '';
}